package com.sisSaude.builders;

import com.sisSaude.collections.ItensDeControleDeFrequenciaCardiacaCollection;
import com.sisSaude.collections.ItensDeFichaseAnamneseCollection;
import com.sisSaude.daos.AvaliacaoAntropometricaDAO;
import com.sisSaude.daos.AvaliacaoDeFlexaoDeBracoDAO;
import com.sisSaude.daos.AvaliacaoDeFlexibilidadeLombarDAO;
import com.sisSaude.daos.AvaliacaoDeForcaAbdominalDAO;
import com.sisSaude.daos.ControleDeFrequenciaCardiacaDAO;
import com.sisSaude.daos.FichaDeAnamneseDAO;
import com.sisSaude.dtos.FichaDeAvaliacaoDTO;
import com.sisSaude.entityBeans.Aluno;

public class FichaDeAvaliacaoBuilder {

	// fields
	private FichaDeAvaliacaoDTO dto;

	// public static methods
	public static FichaDeAvaliacaoDTO build(Aluno aluno) {
		FichaDeAvaliacaoBuilder builder = new FichaDeAvaliacaoBuilder(aluno);
		return builder.dto;
	}

	// constructors
	private FichaDeAvaliacaoBuilder(Aluno aluno) {
		dto = new FichaDeAvaliacaoDTO(aluno);
		load();
	}
	
	// private methods
	private void load() {
		loadFichaDeAnamnese();
		loadAvaliavaoDeFlexibilidadeLombar();
		loadAvaliavaoDeFlexaoDeBraco();
		loadAvaliavaoDeForcaAbdominal();
		loadControleDeFrequenciaCardiaca();
		loadAvaliacaoAntropometrica();
	}
	private void loadFichaDeAnamnese() {
		FichaDeAnamneseDAO dao = new FichaDeAnamneseDAO();
		dto.setFichaDeAnamnese(dao.getUltimaFicha(dto.getAluno().getId()));
		if (dto.getFichaDeAnamnese() != null)
			dto.setItensDeFichaDeAnamnese(new ItensDeFichaseAnamneseCollection(dto.getFichaDeAnamnese().getId(), "PerguntaDeFichaDeAnamnese.ordem").getItens());
	}
	private void loadAvaliavaoDeFlexibilidadeLombar() {
		AvaliacaoDeFlexibilidadeLombarDAO dao = new AvaliacaoDeFlexibilidadeLombarDAO();
		dto.setAvaliacaoDeFlexibilidadeLombar(dao.getUltimaAvaliacao(dto.getAluno().getId()));
	}
	private void loadAvaliavaoDeFlexaoDeBraco() {
		AvaliacaoDeFlexaoDeBracoDAO dao = new AvaliacaoDeFlexaoDeBracoDAO();
		dto.setAvaliacaoDeFlexaoDeBraco(dao.getUltimaAvaliacao(dto.getAluno().getId()));
	}
	private void loadAvaliavaoDeForcaAbdominal() {
		AvaliacaoDeForcaAbdominalDAO dao = new AvaliacaoDeForcaAbdominalDAO();
		dto.setAvaliacaoDeForcaAbdominal(dao.getUltimaAvaliacao(dto.getAluno().getId()));
	}
	private void loadControleDeFrequenciaCardiaca() {
		ControleDeFrequenciaCardiacaDAO dao = new ControleDeFrequenciaCardiacaDAO();
		dto.setControleDeFrequenciaCardiaca(dao.getUltimoControle(dto.getAluno().getId()));
		if (dto.getControleDeFrequenciaCardiaca() != null)
			dto.setItensDeControleDeFrequenciaCardiaca(new ItensDeControleDeFrequenciaCardiacaCollection(dto.getControleDeFrequenciaCardiaca().getId(), "ItemDeControleDeFrequenciaCardiaca.duracao").getItens());
	}
	private void loadAvaliacaoAntropometrica() {
		AvaliacaoAntropometricaDAO dao = new AvaliacaoAntropometricaDAO();
		dto.setAvaliacaoAntropometrica(dao.getUltimaAvaliacao(dto.getAluno().getId()));
	}

}
